package org.example.string;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
 * 设置String Table 的长度 -XX:StringTableSize
 * 在jdk 1.6之前默认为 1009
 * 在jdk 1.7之后默认为 60013
 * 在jdk1.8之后最小可设置的长度为1009
 * @author youshang
 * @date 2022/03/27 11:59
 **/
public class StringTableInternTest {
    public static void main(String[] args) {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("word.txt"));
            long start = System.currentTimeMillis();
            String data;
            while ((data = br.readLine()) != null) {
                data.intern(); //当调用intern方法时，如果池中已经包含这个对象，那么返回 否则创建
            }
            long end = System.currentTimeMillis();
            System.out.println(end-start);
            //-XX:StringTableSize=1009 //129ms
            //-XX:StringTableSize=60013 //31ms
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
